package com.tqz.javase.study.datatypeandoper;

/**
 * 进制转换。
 *
 * <p>进制类型：
 * 十进制：人类使用，0到9
 * 二进制：计算机使用，只有1和0
 * 八进制和十六进制：为了更好的表示二进制(缩短二进制长度)，
 * 八进制是八位，0到7，超过7的话进位为10，十六机制是0到9，A、B、C、D、E、F。
 *
 * <p>计算机使用二进制而不使用十进制的原因：
 * 1.物理上容易实现，可靠性强。
 * 2.运算简单。
 * 3.便于进行逻辑运算。
 * <p>1011.1的二进制转换为十进制：1x2<sup>3</sup>+0x2<sup>2</sup>+1x2<sup>1</sup>+1x2<sup>0</sup>+1x2<sup>-1</sup>=
 * 8+0+2+1+0.5=
 * 11.5
 * <p>(256.73)的十进制：2x10<sup>2</sup>+5x10<sup>1</sup>+6x10<sup>0</sup>+7x10<sup>-1</sup>+3x10<sup>-2</sup>=
 * 200+50+6+0.7+0.03=
 * 256.73
 *
 * <p>位bit：
 * 最小值：0，
 * 最大值：1，
 * 表示的数的范围：0-1，(2<sup>1</sup>-1)
 * <p>
 * 字节byte：8bit
 * 最小值：0000 0000，
 * 最大值：1111 1111，
 * 表示的数的范围：0-255，(2<sup>8</sup>-1)
 * <p>
 * 字符：16bit
 * 最小值：0000 0000 0000 0000
 * 最大值：1111 1111 1111 1111
 * 表示的数的范围：0-65536，(2<sup>16</sup>-1)
 *
 * <p>符号位。
 * 二进制如何表示正数和负数呢？
 * 使用最高位作为符号位，0表示正数，1表示负数，其余位数用作数值位，代表数值。
 * +      1 1 0 1 1 0 1     |    -      1 1 0 1 1 0 1
 * 0      1 1 0 1 1 0 1     |    1      1 1 0 1 1 0 1
 * 数符   -----数值-----     |    数符   -----数值-----
 *
 * <p>字节byte表示的数的范围：
 * 1.无符号位：0-127(2<sup>8</sup>-1)，256个数
 * 2.有符号位：-128(-2<sup>7</sup>)-127(2<sup>7</sup>-1)，256个数。
 * 字符表示的数的范围：
 * 1.无符号位：0-65535(2<sup>16</sup>-1)，65536个数
 * 2.有符号位：-32768(2<sup>15</sup>)-32767(2<sup>15</sup>-1)，还是65536个数。
 *
 * @author tianqingzhao
 * @since 2023-05-05 21:05
 */
public class SystemsConversionTest {

    public static void main(String[] args) {
        Integer num = null;
    }
}
